{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "western-reproduction",
   "metadata": {},
   "source": [
    "https://leetcode.com/problems/largest-time-for-given-digits\n",
    "\n",
    "\n",
    "Runtime: 0 ms, faster than 100.00% of Go online submissions for Largest Time for Given Digits.\n",
    "Memory Usage: 2.5 MB, less than 8.33% of Go online submissions for Largest Time for Given Digits.\n",
    "\n",
    "\n",
    "```go\n",
    "package main\n",
    "\n",
    "import (\n",
    "\t\"fmt\"\n",
    "\t\"strconv\"\n",
    ")\n",
    "\n",
    "func get_permutations(arr []int) [][]int {\n",
    "\t//copied\n",
    "\tvar helper func([]int, int)\n",
    "\tres := [][]int{}\n",
    "\n",
    "\thelper = func(arr []int, n int) {\n",
    "\t\tif n == 1 {\n",
    "\t\t\ttmp := make([]int, len(arr))\n",
    "\t\t\tcopy(tmp, arr)\n",
    "\t\t\tres = append(res, tmp)\n",
    "\t\t} else {\n",
    "\t\t\tfor i := 0; i < n; i++ {\n",
    "\t\t\t\thelper(arr, n-1)\n",
    "\t\t\t\tif n%2 == 1 {\n",
    "\t\t\t\t\ttmp := arr[i]\n",
    "\t\t\t\t\tarr[i] = arr[n-1]\n",
    "\t\t\t\t\tarr[n-1] = tmp\n",
    "\t\t\t\t} else {\n",
    "\t\t\t\t\ttmp := arr[0]\n",
    "\t\t\t\t\tarr[0] = arr[n-1]\n",
    "\t\t\t\t\tarr[n-1] = tmp\n",
    "\t\t\t\t}\n",
    "\t\t\t}\n",
    "\t\t}\n",
    "\t}\n",
    "\thelper(arr, len(arr))\n",
    "\treturn res\n",
    "}\n",
    "\n",
    "func format_the_time(hour int, minutes int) string {\n",
    "\th := strconv.Itoa(hour)\n",
    "\tm := strconv.Itoa(minutes)\n",
    "\tif len(h) == 1 {\n",
    "\t\th = \"0\" + h\n",
    "\t}\n",
    "\tif len(m) == 1 {\n",
    "\t\tm = \"0\" + m\n",
    "\t}\n",
    "\treturn fmt.Sprintf(\"%s:%s\", h, m)\n",
    "}\n",
    "\n",
    "func largestTimeFromDigits(arr []int) string {\n",
    "\t//9:29\n",
    "\tpermutations := get_permutations(arr)\n",
    "\tmin_length := -1\n",
    "\tthe_time := make([]int, 2)\n",
    "\tfor i := 0; i < len(permutations); i++ {\n",
    "\t\ta := permutations[i][0]\n",
    "\t\tb := permutations[i][1]\n",
    "\t\tc := permutations[i][2]\n",
    "\t\td := permutations[i][3]\n",
    "\t\thour := a*10 + b\n",
    "\t\tminutes := c*10 + d\n",
    "\t\tif ((0 <= hour) && (hour <= 23)) && ((0 <= minutes) && (minutes <= 59)) {\n",
    "\t\t\tlength := hour*60 + minutes\n",
    "\t\t\tif length > min_length {\n",
    "\t\t\t\tmin_length = length\n",
    "\t\t\t\tthe_time[0] = hour\n",
    "\t\t\t\tthe_time[1] = minutes\n",
    "\t\t\t}\n",
    "\t\t}\n",
    "\t}\n",
    "\tif min_length == -1 {\n",
    "\t\treturn \"\"\n",
    "\t}\n",
    "\treturn format_the_time(the_time[0], the_time[1])\n",
    "\t//9:48\n",
    "}\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "respected-casino",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Go",
   "language": "go",
   "name": "gophernotes"
  },
  "language_info": {
   "codemirror_mode": "",
   "file_extension": ".go",
   "mimetype": "",
   "name": "go",
   "nbconvert_exporter": "",
   "pygments_lexer": "",
   "version": "go1.15.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
